﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Jemer.Domain;
using Jemer.Data;
using Jemer.Data.Infrastructure;
using Jemer.Domain.Entities;
using Jemer.Data.Repositories;

namespace Jemer.Service
{
    
    public interface IUserAccountService
    {
        IQueryable<UserAccount> GetUserAccounts();
        UserAccount GetUserAccount(int id);
        void CreateUserAccount(UserAccount userAccount);
        void DeleteUserAccount(int id);
        void SaveUserAccount();
    }
    
    public class UserAccountService : IUserAccountService
    {
        private readonly IUserAccountRepository userAccountRepository;
        private readonly IUnitOfWork unitOfWork;
        public UserAccountService(IUserAccountRepository userAccountRepository, IUnitOfWork unitOfWork)
        {
            this.userAccountRepository = userAccountRepository;
            this.unitOfWork = unitOfWork;
        }  
        #region IUserAccountService Members

        public IQueryable<UserAccount> GetUserAccounts()
        {
            var userAccounts = userAccountRepository.GetAll();
            return userAccounts;
        }

        public UserAccount GetUserAccount(int id)
        {
            var userAccount = userAccountRepository.GetById(id);
            return userAccount;
        }

        public void CreateUserAccount(UserAccount userAccount)
        {
            userAccountRepository.Add(userAccount);
            SaveUserAccount();
        }

        public void DeleteUserAccount(int id)
        {
            var userAccount = userAccountRepository.GetById(id);
            userAccountRepository.Delete(userAccount);
            SaveUserAccount();
        }

        public void SaveUserAccount()
        {
            unitOfWork.Commit();
        }

        #endregion
    }
    
    
}